# -*- encoding: utf-8 -*-
'''
@File    :   kbucket.py
@Time    :   2021/06/22 09:24:53
@Author  :   Tan yunlin 
@Version :   1.0
@Contact :   3465126952@qq.com
@Desc    :   KBucket类，实现K桶机制
'''

# here put the import lib


class KBucket:
    def __init__(self, rangeLower, rangeUpper, ksize):
        """
        K桶实现:每个k桶最大容纳k个节点，创建某个节点的K桶时，会将rang范围确定，
        比如节点第0个k桶，距离该节点范围是[1,2)
        """
        self.range = (rangeLower, rangeUpper
                      )  # range： K桶距离范围，代表桶里存储的节点与该节点的距离范围[2^i,2^(i+1)
        self.ksize = ksize  # ksize: K桶的大小
        self.init_bucket()

    def init_bucket(self):
        self.bucket = []  # 存储节点的列表

    def add_node(self, node):
        """
        往K桶里追加节点
        """
        self.bucket.append(node)

    def get_length(self):
        """
        获取bucket的长度
        """
        return len(self.bucket)
